var obj={
    hi:function(){
        console.log(this);
        return ()=>{
            console.log(this);
        }
    },
    sayHi:function(){
        return function(){
            console.log(this);
            return()=>{
                console.log(this);
            }
        }
    },
    say:()=>{
        console.log(this)
    }
}
let sayHi=obj.sayHi();
let fun1=sayHi();//window
fun1();//window

let fun2=sayHi.bind(obj)();//obj
fun2();//obj

var func=obj.hi;//普通函数
// func.call(obj);
// 指定this，并且返回一个新的函数
// bind 为了稍后执行而准备，异步
func.bind(obj)()();